Everything about Transaction Log totally explained
In the field of
databases in
computer science, a
transaction log (also
database log or
binary log) is a history of actions executed by a
database management system to guarantee
ACID properties over
crashes or hardware failures. Physically, a log is a
file of updates done to the database, stored in stable storage.
If, after a start, the database is found in an
inconsistent state or not been shut down properly, the database management system reviews the database logs for
uncommitted transactions and
rolls back the changes made by these
transactions. Additionally, all transactions that are already committed but whose changes were not yet materialized in the database are re-applied. Both are done to ensure
atomicity and
durability of transactions.
This term isn't to be confused with normal
logs which are generally intended to be verbose and human-readable (though database management systems usually also provide such logs in addition to the transaction log).
Anatomy of a general database log
A database log record is made up of
- Log Sequence Number: A unique id for a log record. With LSNs, logs can be recovered in constant time. Most logs' LSNs are assigned in monotonically increasing order, which is useful in recovery algorithms, like ARIES.
- Prev LSN: A link to the last log record. This implies database logs are constructed in linked list form.
- Transaction ID number: A reference to the database transaction generating the log record.
- Type: Describes the type of database log record.
- information about the actual changes that triggered the log record to be written
Types of database log records
All log records include the general log attributes above, and also other attributes depending on their type (which is recorded in the
Type attribute, as above).
Update Log Record notes an update (change) to the database. It includes this extra information:
- PageID: A reference to the Page ID of the modified page.
- Length and Offset: Length in bytes and offset of the page are usually included.
- Before and After Images: Includes the value of the bytes of page before and after the page change. Some databases may have logs which include one or both images.
Compensation Log Record notes the rollback of a particular change to the database. Each correspond with exactly one other Update Log Record (although the corresponding update log record isn't typically stored in the Compensation Log Record). It includes this extra information:
- undoNextLSN: This field contains the LSN of the next log record that's to be undone for transaction that wrote the last Update Log.
Commit Record notes a decision to commit a transaction.
Abort Record notes a decision to abort and hence rollback a transaction.
Checkpoint Record notes that a checkpoint has been made. These are used to speed up recovery. They record information that eliminates the need to read a long way into the log's past. This varies according to checkpoint algorithm. If all dirty pages are flushed while creating the checkpoint (as in PostgreSQL), it might contain:
- redoLSN: This is a reference to the first log record that corresponds to a dirty page. for example the first update that wasn't flushed at checkpoint time. This is where redo must begin on recovery.
- undoLSN: This is a reference to the oldest log record of the oldest in-progress transaction. This is the oldest log record needed to undo all in-progress transactions.
Completion Record notes that all work has been done for this particular transaction. (It has been fully committed or aborted)
Tables
These tables are maintained in memory, and can be efficiently reconstructed (if not exactly, to an equivalent state) from the log and the database:
Transaction Table: The table contains one entry for each active transaction. This includes Transaction ID and lastLSN, where lastLSN describes the LSN of the most recent log record for the transaction.
Dirty Page Table: The table contains one entry for each dirty page that haven't been written to disk. The entry contains recLSN, where recLSN is the LSN of the first log record that caused the page to be dirty.
Further Information
Get more info on 'Transaction Log'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://transaction_log.totallyexplained.com">Transaction log Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |